home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / e / amigae30a_fr.lha / AmigaE30f / Sources / Tools / Lex / simplelex.doc next >
Encoding:
Text File  |  1994-10-04  |  1.9 KB  |  52 lines

  1. simplelex.m: un analyseur lexical général simple pour des taches variées
  2.  
  3. Ce lex() est à utiliser si ca vous ennuie d'en faire un vous même. Il peut
  4. aussi servir comme exemple ou comme point de départ sur comment faire
  5. votre propre lex. Regardez simpletest.e pour une chouette exemple
  6. d'analyseur qui utilise ce lex.
  7.  
  8.  
  9. lex_int(début,long,formelibre=FALSE,unelignecommentaire=-2)
  10.  
  11.     initialise lex, 'début' et 'long' prend la région de lamémoire où se trouve
  12.     le texte duquel lex() prendra les tokens. La mémoire a besoin d'être
  13.     suivit par des "\n", readfile() du file.m le fait pour vous. 'formelibre'
  14.     dit si "\n" doit être interprété comme un espace ou non.
  15.     'unelignecommentaire' est un CHAR.
  16.  
  17.  
  18. token,attr:=lex()
  19.  
  20.     Le lex actuel retourne un token, et pour certains tokens aussi un attribut.
  21.  
  22.     " ", "\t"                       espace, pas retourné
  23.     "\n"                            LEX_EOL, ou espace
  24.     "[a-zA-Z_][a-zA-Z0-9_]*"        LEX_IDENT, attr=ptr sur le premier caractère
  25.                                     [comme l'indentation du E]
  26.     <num>                           LEX_INTEGER, attr=valeur
  27.                                     [n'importe quoi accpté par Val()]
  28.     <eof>                           LEX_EOF
  29.     "<anything>"                    LEX_STRINGQ, attr=ptr sur le premier caractère
  30.     '<anything>'                    LEX_STRINGA, idem.
  31.  
  32.     n'importe quel autre caractère est retourné comme token.
  33.  
  34.  
  35. linenum:=lex_curline()
  36.  
  37.     retourne le numéro de ligne qui est actuellement analysé.
  38.  
  39.  
  40. ptr:=lex_current()
  41.  
  42.     retourne le pointeur actuel dans le texte. Pratique pour ces cas où lex
  43.     retourne un 'pointeur sur le premier caractère', comme cela sera un
  44.     'pointeur sur le dernier caractère'.
  45.  
  46.  
  47. pos:=lex_getline(estring)
  48.  
  49.     copie la ligne actuelle dans une chaine E, et retourne l'offset dans
  50.     cette chaine où se trouve lex(). Très pratique pour des reports
  51.     d'erreurs précis, comme 'simpletest.e' le démontre.
  52.